home *** CD-ROM | disk | FTP | other *** search
/ PCMania 64 / PCMania CD64_1.iso / phy / phy006 / asm / ej_vga.asm next >
Assembly Source File  |  1997-10-05  |  3KB  |  50 lines

  1. .MODEL TINY
  2. .CODE
  3.  
  4.                 ORG     100h
  5. Inicio:         JMP    Horizontales
  6.  
  7. PonPixel        PROC                    ;  Coordenadas del punto en (BX,DX).
  8.                 PUSH    AX              ;  Siempre debemos guardar todos los
  9.                 PUSH    BX              ; registros usados por la función para
  10.                 PUSH    DX              ; no llevarnos sorpresas.
  11.                 PUSH    ES
  12.                 MOV     AX, 320         ;  Cargamos AX para la multiplicación.
  13.                 MUL     DX              ;  Hacemos la multiplicación por Y*320
  14.                 ADD     BX, AX          ;  Sumamos la coordenada X.
  15.                 MOV     AX, 0A000h
  16.                 MOV     ES, AX          ;  Cargamos en ES el segmento de video.
  17.                 MOV     ES:[BX], CL     ;  Escribimos el byte (color) deseado.
  18.                 POP     ES
  19.                 POP     DX              ;  Debemos acordarnos de recoger todo
  20.                 POP     BX              ; lo que empujamos en la pila o el
  21.                 POP     AX              ; programa se colgará (la dirección
  22.                 RET                     ; de retorno tambien se guarda en la
  23. PonPixel        ENDP                    ; pila).
  24.  
  25. Horizontales    PROC
  26.                 MOV     AX, 0013h
  27.                 INT     10h             ;  Entramos en el modo gráfico 13h.
  28.  
  29.                 XOR     DX, DX          ;  Coordenada Y inicializada a 0.
  30.           @@BucleY:                     ;  Bucle principal.
  31.                 XOR     BX, BX          ;  Coordenada X inicializada a 0.
  32.             @@BucleX:
  33.                 MOV     CL, DL          ;  Dibujamos un punto en (BX,DX) con
  34.                 CALL    PonPixel        ; el color en CL.
  35.                 INC     BX              ;  Un pixel más a la derecha.
  36.                 CMP     BX, 320         ;  Hasta que lleguemos al final
  37.                 JB    @@BucleX          ; de la columna (320).
  38.                 INC     DX              ;  Siguiente línea.
  39.                 CMP     DX, 200         ;  Hasta que lleguemos a la última
  40.                 JB    @@BucleY          ; línea de pantalla (200).
  41.  
  42.                 XOR     AH, AH          ;  Esperamos la pulsación de una tecla
  43.                 INT     16h             ; (función 0 de la INT 16h de la BIOS).
  44.                 MOV     AX, 3
  45.                 INT     10h             ;  Modo texto predeterminado.
  46.                 MOV     AX, 4C00h
  47.                 INT     21h             ;  Salimos al DOS.
  48. Horizontales    ENDP
  49.                 END     Inicio
  50.